package com.example.design.泛型;

/**
 * 泛型类
 * @param <T>
 *
 * 泛型类在创建对象的时候，没有指定类型，按照object类型来操作
 * 不支持基本数据类型
 * 同一泛型类，根据不同的数据类型创建的对象，本质上是同一类型
 *
 * 从泛型类派生子类
 * 子类也是泛型类，子类和父类的泛型类型要一致.
 * public class ChildFirst<T,E> extends Parent<T> 子类也可以有自己的泛型E
 *
 * 子类不是泛型类，父类要明确泛型的数据类型
 */
public class Generic<T> {
    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey() {
        return key;
    }


    public static void main(String[] args) {
        Generic<Integer> generic = new Generic<>(12);
        Generic<String> generic1 = new Generic<>("12");

        // 同一泛型类，根据不同的数据类型创建的对象，本质上是同一类型
        System.out.println(generic.getClass());
        System.out.println(generic1.getClass());
        System.out.println(generic1.getClass() == generic.getClass());
    }
}
